package dancespeedyenumsmysql

const (
	DanceElementPubilbType  = 0
	DanceElementPrivateType = 1
	DanceElementNoneType    = 2

	DanceElementTypeClothing    = 1 // 一级 服饰
	DanceElementTypeProps       = 2 // 一级 道具
	DanceElementTypeTool        = 3 // 一级 工具
	DanceElementTypePetClothing = 4 // 一级 宠物时装

	//二级 散件
	DanceElementPartHair  = 1 //头发
	DanceElementPartFace  = 2 // 脸
	DanceElementPartUpper = 5 // 上半身
	DanceElementPartLower = 6 // 下半身fa
	DanceElementPartShoes = 8 // 鞋子
	//挂件
	DanceElementPartLHand      = 11 // 左手持
	DanceElementPartRHand      = 12 // 右手持
	DanceElementPartHead       = 14 // 头顶
	DanceElementPartBack       = 15 // 背后
	DanceElementHandEmbroidery = 16 // 手秀
	//组合
	DanceElementPartSuitHF      = 21 // 组合 - 头发 + 脸
	DanceElementPartSuitHFJ     = 22 // 组合 - 头发 + 脸 + 上身
	DanceElementPartSuitHFJP    = 23 // 组合 - 头发 + 脸 + 上身 + 下身
	DanceElementPartSuitHFJPS   = 24 // 组合 - 头发 + 脸 + 上身 + 下身 + 鞋
	DanceElementPartSuitHJ      = 25 // 组合 - 头发 + 上身
	DanceElementPartSuitHJP     = 26 // 组合 - 头发 + 上身 + 下身
	DanceElementPartSuitHJPS    = 27 // 组合 - 头发 + 上身 + 下身 + 鞋
	DanceElementPartSuitJP      = 28 // 组合 - 上身 + 下身
	DanceElementPartSuitJPS     = 29 // 组合 - 上身 + 下身 + 鞋
	DanceElementPartSuitPS      = 30 // 组合 - 下身 + 鞋
	DanceElementPartPelvisLocal = 41 // 腰附加
	DanceElementPartSpine1Local = 42 // 胸附加
	DanceElementPartRootLocal   = 43 // 脚底附加
	DanceElementPartPelvisWorld = 51 // 腰挂载
	DanceElementPartSpine1World = 52 // 胸挂载
	DanceElementPartRootWorld   = 53 // 脚底挂载
	DanceElementPartHalo        = 90 // 光环

	//二级 道具
	DanceElementPartHorn           = 2  // 喇叭
	DanceElementPartDuoPropCards   = 3  // 双人动作卡
	DanceElementPartStarDiamond    = 4  // 星钻
	DanceElementPartTreasureChests = 5  // 宝箱
	DanceElementPartPetEggs        = 6  // 宠物蛋
	DanceElementPartLifePill       = 7  // 生命丹
	DanceElementPartPhysicalPill   = 8  // 体力丹
	DanceElementPartScorePill      = 9  // 经验丹
	DanceElementPartFortuneCard    = 10 // 福卡
	DanceElementPartPetSpeedyCard  = 11 // 扫荡卡
	DanceElementPartRevivePill     = 12 // 复活丹
	DanceElementPartManifestoCard  = 13 // 宣言卡
	DanceElementPartPiece          = 80 // 碎片
	DanceElementPartPetPiece       = 81 // 宠物碎片

	//二级 工具类型
	DanceElementTypeToolTitle              = 1  //称号
	DanceElementTypeToolIcon               = 2  //头像框
	DanceElementTypeToolSingleP            = 4  //单人分数背景板
	DanceElementTypeToolCoupleP            = 3  //组队分数背景板
	DanceElementTypeToolPersonalCard       = 5  //个人信息卡
	DanceElementTypeToolEffectCards        = 6  //特效卡
	DanceElementTypeToolTreasureBox        = 7  //百宝箱
	DanceElementTypeToolSinglPlayerAction  = 8  //单人动作
	DanceElementTypeToolDoublePlayerAction = 9  //双人动作
	DanceElementTypeToolPhotoFrame         = 10 //相框
	DanceElementTypeToolScene              = 11 //场景
	DanceElementTypeToolHornSkin           = 12 //喇叭皮肤
	DanceElementTypeToolFloat              = 13 //漂浮
	DanceElementTypeToolRelationRing       = 14 //关系戒指
	DanceElementTypeToolCar                = 15 //座驾

	//二级 宠物时装
	DanceElementPetClothingHalo   = 90
	DanceElementPetClothingPelvis = 51
	DanceElementPetClothingWing   = 15
	DanceElementPetSkin           = 1 // 宠物皮肤

	//二级 挂件
	DanceElementPartPresentLHand = 100 // 送礼出现的 额外挂载 左手持
	DanceElementPartPresentRHand = 200 // 送礼出现的 额外挂载 右手持
	DanceElementPartPresentHead  = 300 // 送礼出现的 额外挂载 头顶
	DanceElementPartPresentBack  = 400 // 送礼出现的 额外挂载 背后 Max }

	DanceElementSexMan    = 0 //Man
	DanceElementSexWoman  = 1 //Woman
	DanceElementSexCommon = 2 //通用
)

type DanceElementEnums struct {
}

var DanceElementEnumsObject DanceElementEnums

func (e DanceElementEnums) Tags() []int {
	return []int{
		DanceElementPubilbType,
		DanceElementPrivateType,
		DanceElementNoneType,
	}
}

func (e DanceElementEnums) TagsMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.Tags() {
		m[s] = e.TagsString(s)
	}
	return m
}

func (e DanceElementEnums) TagsString(tag int) string {
	switch tag {
	case DanceElementPubilbType:
		return "公有"
	case DanceElementPrivateType:
		return "私有"
	case DanceElementNoneType:
		return "特殊"
	default:
		return "公有"
	}
}

//public enum ClothPart : int { None = 0,
// 散件
//Hair = 1//头发
//Face = 2// 脸
//Upper = 5// 上半身
//Lower = 6// 下半身fa
//Shoes = 8// 鞋子

//挂件
//LHand = 11// 左手持
//RHand = 12// 右手持
//Head = 14// 头顶
//Back = 15// 背后
//组合
//SuitHF = 21// 组合 - 头发 + 脸
//SuitHFJ = 22// 组合 - 头发 + 脸 + 上身
//SuitHFJP = 23// 组合 - 头发 + 脸 + 上身 + 下身
//SuitHFJPS = 24// 组合 - 头发 + 脸 + 上身 + 下身 + 鞋
//SuitHJ = 25// 组合 - 头发 + 上身
//SuitHJP = 26// 组合 - 头发 + 上身 + 下身
//SuitHJPS = 27// 组合 - 头发 + 上身 + 下身 + 鞋
//SuitJP = 28// 组合 - 上身 + 下身
//SuitJPS = 29// 组合 - 上身 + 下身 + 鞋
//SuitPS = 30// 组合 - 下身 + 鞋
//PelvisLocal = 41// 腰附加
//Spine1Local = 42// 胸附加
//RootLocal = 43// 脚底附加
//PelvisWorld = 51// 腰挂载
//Spine1World = 52// 胸挂载
//RootWorld = 53// 脚底挂载
//Halo = 90// 光环
//挂件
//PresentLHand = 100// 送礼出现的 额外挂载 左手持
//PresentRHand = 200// 送礼出现的 额外挂载 右手持
//PresentHead = 300// 送礼出现的 额外挂载 头顶
//PresentBack = 400// 送礼出现的 额外挂载 背后 Max }

func (e DanceElementEnums) PetClothingTwo() []int {
	return []int{
		DanceElementPetClothingHalo,
		DanceElementPetClothingPelvis,
		DanceElementPetClothingWing,
		DanceElementPetSkin,
	}
}

func (e DanceElementEnums) PetClothingMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.PetClothingTwo() {
		m[s] = e.PetClothingString(s)
	}
	return m
}

func (e DanceElementEnums) PetClothingString(tag int) string {
	switch tag {
	case DanceElementPetClothingHalo:
		return "宠物光环"
	case DanceElementPetClothingPelvis:
		return "宠物腰挂载"
	case DanceElementPetClothingWing:
		return "宠物翅膀"
	case DanceElementPetSkin:
		return "宠物皮肤"
	default:
		return "宠物光环"
	}
}

func (e DanceElementEnums) PartTwo() []int {
	return []int{
		DanceElementPartPiece,
		DanceElementPartPetPiece,
		DanceElementPartDuoPropCards,
		DanceElementPartStarDiamond,
		DanceElementPartHorn,
		DanceElementPartTreasureChests,
		DanceElementPartPetEggs,
		DanceElementPartLifePill,
		DanceElementPartPhysicalPill,
		DanceElementPartScorePill,
		DanceElementPartFortuneCard,
		DanceElementPartPetSpeedyCard,
		DanceElementPartRevivePill,
		DanceElementPartManifestoCard,
	}
}

func (e DanceElementEnums) PartTwoMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.PartTwo() {
		m[s] = e.PartTwoString(s)
	}
	return m
}

func (e DanceElementEnums) PartTwoString(tag int) string {
	switch tag {
	case DanceElementPartPiece:
		return "碎片"
	case DanceElementPartPetPiece:
		return "宠物碎片"
	case DanceElementPartDuoPropCards:
		return "双人动作卡"
	case DanceElementPartStarDiamond:
		return "星钻"
	case DanceElementPartHorn:
		return "喇叭"
	case DanceElementPartTreasureChests:
		return "宝箱"
	case DanceElementPartLifePill:
		return "生命丹"
	case DanceElementPartPetEggs:
		return "宠物蛋"
	case DanceElementPartPhysicalPill:
		return "体力丹"
	case DanceElementPartScorePill:
		return "经验丹"
	case DanceElementPartFortuneCard:
		return "福卡"
	case DanceElementPartPetSpeedyCard:
		return "扫荡卡"
	case DanceElementPartRevivePill:
		return "复活丹"
	case DanceElementPartManifestoCard:
		return "宣言卡"
	default:
		return "碎片"
	}
}

func (e DanceElementEnums) Part() []int {
	return []int{
		DanceElementPartHair,
		DanceElementPartFace,
		DanceElementPartUpper,
		DanceElementPartLower,
		DanceElementPartShoes,
		DanceElementPartLHand,
		DanceElementPartRHand,
		DanceElementPartHead,
		DanceElementPartBack,
		DanceElementPartSuitHF,
		DanceElementPartSuitHFJ,
		DanceElementPartSuitHFJP,
		DanceElementPartSuitHFJPS,
		DanceElementPartSuitHJ,
		DanceElementPartSuitHJP,
		DanceElementPartSuitHJPS,
		DanceElementPartSuitJP,
		DanceElementPartSuitJPS,
		DanceElementPartSuitPS,
		DanceElementPartPelvisLocal,
		DanceElementPartSpine1Local,
		DanceElementPartRootLocal,
		DanceElementPartPelvisWorld,
		DanceElementPartSpine1World,
		DanceElementPartRootWorld,
		DanceElementPartHalo,
		DanceElementPartPresentLHand,
		DanceElementPartPresentRHand,
		DanceElementPartPresentHead,
		DanceElementPartPresentBack,
		DanceElementHandEmbroidery,
	}
}

func (e DanceElementEnums) PartMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.Part() {
		m[s] = e.PartString(s)
	}
	return m
}

func (e DanceElementEnums) PartString(tag int) string {
	switch tag {
	case DanceElementPartHair:
		return "头发"
	case DanceElementPartFace:
		return "脸"
	case DanceElementPartUpper:
		return "上半身"
	case DanceElementPartLower:
		return "下半身"
	case DanceElementPartShoes:
		return "鞋子"
	case DanceElementPartLHand:
		return "左手持"
	case DanceElementPartRHand:
		return "右手持"
	case DanceElementPartHead:
		return "头顶"
	case DanceElementPartBack:
		return "背后"
	case DanceElementPartSuitHF:
		return "头发+脸"
	case DanceElementPartSuitHFJ:
		return "头发+脸+上身"
	case DanceElementPartSuitHFJP:
		return "头发+脸+上身+下身"
	case DanceElementPartSuitHFJPS:
		return "头发+脸+上身+下身+鞋"
	case DanceElementPartSuitHJ:
		return "头发+上身"
	case DanceElementPartSuitHJP:
		return "头发+上身+下身"
	case DanceElementPartSuitHJPS:
		return "头发+上身+下身+鞋"
	case DanceElementPartSuitJP:
		return "上身+下身"
	case DanceElementPartSuitJPS:
		return "上身+下身+鞋"
	case DanceElementPartSuitPS:
		return "下身+鞋"
	case DanceElementPartPelvisLocal:
		return "腰附加"
	case DanceElementPartSpine1Local:
		return "胸附加"
	case DanceElementPartRootLocal:
		return "脚底附加"
	case DanceElementPartPelvisWorld:
		return "腰挂载"
	case DanceElementPartSpine1World:
		return "胸挂载"
	case DanceElementPartRootWorld:
		return "脚底挂载"
	case DanceElementPartHalo:
		return "光环"
	case DanceElementPartPresentLHand:
		return "额外挂载 左手持"
	case DanceElementPartPresentRHand:
		return "额外挂载 右手持"
	case DanceElementPartPresentHead:
		return "额外挂载 头顶"
	case DanceElementPartPresentBack:
		return "额外挂载 背后"
	case DanceElementHandEmbroidery:
		return "手秀"
	default:
		return "公有"
	}
}

func (e DanceElementEnums) ElementType() []int {
	return []int{
		DanceElementTypeClothing,
		DanceElementTypeProps,
		DanceElementTypeTool,
		DanceElementTypePetClothing,
	}
}

func (e DanceElementEnums) ElementMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.ElementType() {
		m[s] = e.ElementString(s)
	}
	return m
}

func (e DanceElementEnums) ElementString(tag int) string {
	switch tag {
	case DanceElementTypeClothing:
		return "服饰"
	case DanceElementTypeProps:
		return "道具"
	case DanceElementTypeTool:
		return "工具"
	case DanceElementTypePetClothing:
		return "宠物时装"
	default:
		return "其他"
	}
}

func (e DanceElementEnums) ElementTool() []int {
	return []int{
		DanceElementTypeToolTitle,
		DanceElementTypeToolIcon,
		DanceElementTypeToolSingleP,
		DanceElementTypeToolCoupleP,
		DanceElementTypeToolPersonalCard,
		DanceElementTypeToolEffectCards,
		DanceElementTypeToolTreasureBox,
		DanceElementTypeToolSinglPlayerAction,
		DanceElementTypeToolDoublePlayerAction,
		DanceElementTypeToolPhotoFrame,
		DanceElementTypeToolScene,
		DanceElementTypeToolHornSkin,
		DanceElementTypeToolFloat,
		DanceElementTypeToolRelationRing,
		DanceElementTypeToolCar,
	}
}

func (e DanceElementEnums) ElementToolMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.ElementTool() {
		m[s] = e.ElementToolString(s)
	}
	return m
}

func (e DanceElementEnums) ElementToolString(tag int) string {
	switch tag {
	case DanceElementTypeToolTitle:
		return "称号"
	case DanceElementTypeToolIcon:
		return "头像框"
	case DanceElementTypeToolSingleP:
		return "单人分数背景板"
	case DanceElementTypeToolCoupleP:
		return "组队分数背景板"
	case DanceElementTypeToolPersonalCard:
		return "个人信息卡"
	case DanceElementTypeToolEffectCards:
		return "特效卡"
	case DanceElementTypeToolTreasureBox:
		return "百宝箱"
	case DanceElementTypeToolSinglPlayerAction:
		return "单人动作"
	case DanceElementTypeToolDoublePlayerAction:
		return "双人动作"
	case DanceElementTypeToolPhotoFrame:
		return "相框"
	case DanceElementTypeToolScene:
		return "场景"
	case DanceElementTypeToolHornSkin:
		return "喇叭皮肤"
	case DanceElementTypeToolFloat:
		return "漂浮"
	case DanceElementTypeToolRelationRing:
		return "关系戒指"
	case DanceElementTypeToolCar:
		return "座驾"
	default:
		return "其他"
	}
}

func (e DanceElementEnums) ElementSex() []int {
	return []int{
		DanceElementSexMan,
		DanceElementSexWoman,
		DanceElementSexCommon,
	}
}

func (e DanceElementEnums) ElementSexMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.ElementSex() {
		m[s] = e.ElementSexString(s)
	}
	return m
}

func (e DanceElementEnums) ElementSexString(tag int) string {
	switch tag {
	case DanceElementSexMan:
		return "男"
	case DanceElementSexWoman:
		return "女"
	case DanceElementSexCommon:
		return "通用"
	default:
		return "其他"
	}
}
